<?php

require_once("/var/www/AppResiduos2/config/BaseDatosPDO.php");
require_once("/var/www/AppResiduos2/lib/model/Residuo.php");

class ResiduoDAO{


        var $conexion;

        public function  __construct() {
            try{
                $bd = new BaseDatosPDO("localhost", "phplogin", "root", "root");
                $this->conexion = $bd->conectar();
            } catch (PDOException $e){
                echo $e->getMessage();
            }
            $this->conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
            $this->conexion->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
        }

	/**
	Crea una nuevo registro en la tabla Residuo en la bd
	@param Residuo residuo
	*/
	public function nuevoResiduo($residuo){
            $query = $this->conexion->prepare("INSERT INTO residues VALUES (?,?,?,?,?,?)");
            $params = array($residuo->idproducer, $residuo->id, $residuo->name, $residuo->toxicity, $residuo->typetransport, $residuo->quantity);
            $result = $query->execute($params);
	}

	/**
	Modifica la cantidad de residuo de un residuo, dado el id del residuo
        y el id del productor.
	@param Residuo residuo
	*/
	public function modificarResiduo($residuo){
            $query = $this->conexion->prepare('UPDATE residues SET quantity = ?
                WHERE id = ? and idproducer = ?');
            $params = array($residuo->quantity, $residuo->id, $residuo->idproducer);
            $result = $query->execute($params);
	}

	/**
	Elimina un registro de la tabla Residuo de la bd
	@param Residuo residuo
	*/
	public function eliminarResiduo($residuo){
            $query = $this->conexion->prepare('DELETE FROM residues WHERE id = ?
                and idproducer = ?');
            $result = $query->execute(array($residuo->id, $residuo->idproducer));
	}

	/**
         * Obtiene un registro de la tabla Residuo de la bd
         * @param String $id
         * @return Residuo
         */
	public function obtenerResiduo($id, $idproducer){
            $query = $this->conexion->prepare('SELECT * FROM residues 
                WHERE id = ? and idproducer = ?');
            $query->execute(array($id, $idproducer));
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result;
	}

        /**
         * Retorna un registro de la tabla residues de la bd,
         * dado el nombre del residuo
         * @param String $name
         * @return Residuo
         */
        public function obtenerResiduoPorNombre($name, $idproducer){
            $query = $this->conexion->prepare('SELECT * FROM residues WHERE name = ?
                and idproducer = ?');
            $query->execute(array($name, $idproducer));
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result;
	}

	/**
	Lista todos los registros de la tabla residues de la bd
	*/
	public function listarResiduos(){
            $query = $this->conexion->prepare("SELECT * FROM residues WHERE 1 ORDER BY name");
            $query->execute();
            $result = $query->fetchAll(PDO::FETCH_OBJ);
            return $result;
	}

        public function listarResiduosProductor($idproducer){
            $query = $this->conexion->prepare("SELECT * FROM residues WHERE idproducer = ?");
            $query->execute(array($idproducer));
            $result = $query->fetchAll(PDO::FETCH_OBJ);
;
            $i = 0;
            $resultArray = array();
            while ($i < sizeof($result)){
                $resultArray[$i] = $result[$i]->name;
                $i = $i + 1;
            }
            return $resultArray;

	}

}


// Prueba1: Agregar un residuo
//$r = new Residuo();
//$r->idproducer = 7;
//$r->id = "R3";
//$r->name = "oro";
//$r->quantity = 23;
//$r->toxicity = 2;
//$r->typetransport = envase;
//$r2 = new Residuo();
//$r2->idproducer = 6;
//$r2->id = "R2";
//$r2->name = "hierro";
//$r2->quantity = 202.3;
//$r2->toxicity = 8;
//$r2->typeTransport = hormigon;
//$rDAO = new ResiduoDAO();
//$rDAO->nuevoResiduo($r);
//$rDAO->nuevoResiduo($r2);

// Prueba2: Modificar un residuo
//$r = new Residuo();
//$r->idproducer = 5;
//$r->id = "R1";
//$r->name = "mercurio";
//$r->quantity = 102.3;
//$r->toxicity = 10;
//$r->typetransport = envase;
//$rDAO = new ResiduoDAO();
//$rDAO->modificarResiduo($r);

//Prueba3: Eliminar un residuo
//$r = new Residuo();
//$r->idproducer = 5;
//$r->id = "R1";
//$rDAO = new ResiduoDAO();
//$rDAO->eliminarResiduo($r);

//Prueba4: Obtener residuo
//$rDAO = new ResiduoDAO();
//print_r($rDAO->obtenerResiduo("R2", 5));

//Prueba5: Obtener residuo por nombre
//$rDAO = new ResiduoDAO();
//print_r($rDAO->obtenerResiduoPorNombre("mercurio",5));

//Prueba6: Listar residuos
//$rDAO = new ResiduoDAO();
//print_r($rDAO->listarResiduos());

//Prueba7: Listar residuos de un productor
//$rDAO = new ResiduoDAO();
//$res = $rDAO->listarResiduosProductor(5);
//print_r($res);


?>
